#按位运算


var = 15
var1 = 5

#位与运算
req = var & var1

print(req)          #5


'''
    解析:
        15的二进制       1111
        5的二进制        0101
        位置相同为1 
        位置不同为0      0101     再转回去  5

'''


#位或运算
var = 15
var1 = 5


req = var | var1

print(req)      #15

'''
    解析:
        15的二进制       1111
        5的二进制        0101
        位置上有一个
        为1就是1         1111     再转回去  15

'''

#按位非运算

var1 = 16

req = ~var1
print(req)          #-17

#############################
var1 = 18
req = ~var1
print(req)          #-19

#原来的数  +1  去负数




#按位抑或运算

var0 = 12
var1 = 3

req = var0 ^ var1
print(req)


'''
    解析:
        15的二进制       1100
        5的二进制         011
       相同为0不同为1    1111    转为10进制  15  

'''


#左移运算

vara = 7
res = vara << 3     #左移3位
print(res)          #56

'''
    解析:
        7的二进制       111
        左移3位         111000
        转为10进制       56  

'''


#右移运算

vara = 7
res = vara >> 2     #左移3位
print(res)          #56

'''
    解析:
        7的二进制       111
        右移3位         001   (多余的两个1舍去)
        转为10进制       1
        右移        到最后位0 

'''



















